// 合并所有交集
#include<bits/stdc++.h>
using namespace std;
using PII = pair<int, int>;
vector<PII> arr, res;
int n;
int solve()
{
	sort(arr.begin(), arr.end());

    res.push_back(arr[0]);

    for (int i = 1; i < arr.size(); ++i) 
    {
        //当前区间的左右端点
        int curr_l = arr[i].first;
        int curr_r = arr[i].second;
        //结果集中最后一个区间的左右端点
        int last_l = res.back().first;
        int last_r = res.back().second;

        if (curr_l <= last_r) 
        { 
            res.back().second = max(last_r, curr_r); //有交集（包括端点），合并区间（取最大右端点）  
        } else {
            res.push_back(arr[i]); //无交集，直接加入结果集
        }
    }

    return res.size();
}
int main()
{
    cin >> n;
    for (int i = 0; i < n; ++ i)
    {
    	int x, y;
    	cin >> x >> y;
    	arr.push_back({x, y});
	}
	
	cout << solve() << endl;
	
    return 0;     
}